Apparatus and Method for Comparing Pairs of Binary Words

ABSTRACT

An apparatus for comparing pairs of binary words includes an intermediate value determiner and an error detector. The intermediate value determiner determines an intermediate binary word so that the intermediate binary word is equal to a reference binary word for a first pair of equal or inverted binary words, so that the intermediate binary word is equal to the inverted reference binary word for a second pair of equal or inverted binary words and so that the intermediate binary word is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words, if the intermediate value determiner works faultlessly. Further, the error detector provides an error signal based on the intermediate binary word so that the error signal indicates whether or not the binary words of a pair of binary words are equal or inverted.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to, and filed concurrently on Mar. 26, 2012 with U.S. patent application Ser. No. 13/430,126 entitled “System and Method for Signature-Based Redundancy Comparison,” and claims priority to provisional application Ser. No. 61/599,129, filed on Feb. 15, 2012 the contents of which are hereby incorporated by reference.

FIELD

Embodiments according to the invention relate to error detection concepts in electrical circuits and particularly to an apparatus and a method for comparing pairs of binary words.

BACKGROUND

Due to the high integration density of modern electronic circuits and storages, the frequency of errors increases.

Therefore, the implementation of error detection mechanisms in such electronic circuits is of high interest. One possible implementation of such error detection mechanisms is the design of self-checking structures within electronic circuits, i.e. structures which detect their own faults during normal operation. Since comparators are often used for the design of self-checking circuits it is of special interest to design simple comparators which detect their own internal faults during normal operation.

FIG. 8 illustrates a conventional comparator. By the comparator of FIG. 8, the data words u=u₁, . . . , u_(n) and u′=u′₁, . . . , u_(n)′ are compared with respect to uniformity or equality. If u and u′ are not equal, an error signal y=1 is output at the output 16 of the comparator. If u and u′ are equal, a signal y=0 is output at the output 16 of the allocator 15.

The comparator consists of XOR operator VXOR 17 having 2n=8 inputs to which the components u₁, u₂, u₃, u₄ and u₁′, u₂′, u₃′, u₄′ of the data words u and u′ are applied and n outputs for outputting an n digit XOR combined value v=v₁, . . . , v_(n). In FIG. 8, n=4 was selected. Connected downstream from the XOR operator VXOR 17, an OR gate 15 having n=4 inputs is connected for inputting the XOR values v₁, . . . , v_(n) and having an output for outputting an error signal y.

The XOR values v=v₁, . . . , v₄ are formed according to the following relations

v ₁ =u ₁ ⊕u ₁′

v ₂ =u ₂ ⊕u ₂′

v ₃ =u ₃ ⊕u ₃′

v _(n) =u _(n) ⊕u ₄′

from which then the output value y of the comparator is determined

$y = {\overset{4}{\underset{i = 1}{}}{v_{i}.}}$

The XOR operator 17 of FIG. 8 consists of the 4 XOR gates 11, 12, 13 and 14, each comprising two inputs and one output.

First, the recognizability of errors of the comparator in running operation is considered.

At the XOR gate 11, at its two inputs the values u₁, u₁′ are applied which are equal as long as no error occurs in u or u′. At the XOR gate 11, thus only the values 0, 0 or 1, 1 are applied, which are each combined to 0 and are output at its output and thus at the first output of the XOR operator 17 carrying the signal v₁. Similarly, at the further XOR gates 12, 13 and 14 of the XOR operator VXOR 17, as long as no error occurs in u or u′, only the values 0, 0 or 1, 1 are applied and at their outputs the value 0 is output. At the n=4-component output of the XOR operator, thus always the value v=v₁, v₂, v₃, v₄=0, 0, 0, 0 is output, as long as u and u′ are not different.

SUMMARY

An embodiment provides an apparatus for comparing pairs of binary words comprising an intermediate value determiner and an error detector. The intermediate value determiner is configured to determine an intermediate binary word, so that the intermediate binary word is equal to a reference binary word for a first pair of equal or inverted binary words, so that the intermediate binary word is equal to the inverted reference binary word for a second pair of equal or inverted binary words and so that the intermediate binary word is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words if the intermediate value determiner works faultlessly. The first pair of equal or inverted binary words is different from the second pair of equal or inverted binary words. Further, the error detector is configured to provide an error signal based on the intermediate binary word, so that the error signal indicates whether or not the binary words of a pair of binary words are equal or inverted if the intermediate value determiner works faultlessly, and indicates whether or not the intermediate value determiner works faultlessly if the binary words of a pair of binary words are equal or inverted.

By determining an intermediate binary word, which is either equal to a reference binary word or to the inversion thereof for different pairs of equal or inverted binary words, stuck-at errors within the intermediate value determiner can be detected, since each bit of the intermediate binary word carries for some pairs of equal or inverted binary words a 0 and for other pairs of equal or inverted binary words a 1. Therefore, despite correct input signals (pairs of equal or inverted binary words) are provided to the intermediate value determiner, a constant output signal for these correct input signals can be avoided due to the proposed determination of the intermediate binary word. Based on this intermediate binary word the error detector can detect an erroneously working intermediate value determiner, especially but not exclusively, if a stuck-at error within the intermediate value determiner appears. Therefore, the error detection probability in the running operation can be significantly improved.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments according to the invention will be detailed subsequently referring to the appended drawings, in which:

FIG. 1 is a block diagram of an apparatus for comparing pairs of binary words;

FIG. 2 is a block diagram of a comparator for comparing two n-digit data words u and u′;

FIG. 3 is a block diagram of a comparator with a nonlinear function ƒ

FIG. 4 is a block diagram of a comparator with a linear function ƒ

FIG. 5 is a block diagram of a comparator for comparing two n-digit data words u and u′ with an upstream linear feedback shift register;

FIG. 6 is a block diagram of a linear feedback shift register with parallel data inputs (N=n);

FIG. 7 is a flowchart of a method for comparing pairs of binary words; and

FIG. 8 is a block diagram of a known comparator.

DETAILED DESCRIPTION

In the following, the same reference numerals are partly used for objects and functional units having the same or similar functional properties and the description thereof with regard to a figure shall apply also to other figures in order to reduce redundancy in the description of the embodiments.

FIG. 1 shows a block diagram of an apparatus 100 for comparing pairs of binary words u, u′ according to an embodiment. The apparatus 100 comprises an intermediate value determiner 110 connected to an error detector 120. The intermediate value determiner 110 determines an intermediate binary word z, so that the intermediate binary word z is equal to a reference binary word for a first pair of equal or inverted binary words and so that the intermediate binary word z is equal to the inverted reference binary word for a second pair of equal or inverted binary words. Further, the intermediate value determiner 110 determines the intermediate binary word z so that the intermediate binary word z is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words. This determination of the intermediate binary word takes place, if the intermediate value determiner works faultlessly. In this connection, the first pair of equal or inverted binary words is different from the second pair of equal or inverted binary words, which shows that at least for two different pairs of equal or inverted binary words, the intermediate binary word z is equal to the reference binary word in one case and equal to the inverted reference binary word in the second case (guaranteeing a non-constant value for each bit of the intermediate binary word for at least these two different pairs of equal or inverted binary words). The error detector 120 provides an error signal y based on the intermediate binary word z, so that the error signal y indicates whether or not the binary words of a pair of binary words u, u′ are equal or inverted (to each other), if the intermediate value determiner 110 works faultlessly and indicates whether or not the intermediate value determiner 110 works faultlessly, if the binary words u, u′ of a pair of binary words are equal or inverted (to each other).

The described intermediate value determiner 110 determines the intermediate binary word z, so that the bits of the intermediate binary word z are not constant (comprising not constant values) for different pairs of equal or inverted binary words. This is a consequence of the mapping of the first pair of equal or inverted binary words to the reference binary word and the mapping of the second pair of equal or inverted binary word to the inversion of the reference binary word. Further, pairs of unequal and uninverted binary words are mapped to bit sequences unequal to the reference binary word and the inverted reference binary word. Therefore, stuck-at errors within the intermediate value determiner 110 are detectable, since in the stuck-at error case, at least one bit (using a signal line comprising the stuck-at error) stays constant for all pairs of equal or inverted binary words. Consequently, the error detection probability, especially for stuck-at errors, can be significantly increased.

The apparatus 100 compares pairs of binary words to detect unequal and uninverted binary words resulting from a possible failure during a preceding processing. In this connection, a binary word is a bit sequence with an arbitrary number of bits (e.g. 4, 8, 10, 16, 17, 32, 64 or 128 bit), wherein all binary words to be compared by the apparatus 100 comprise the same arbitrary number of bits. Preferably, the bits of a binary word are provided to the apparatus 100 in a parallel manner, which means the apparatus 100 and particularly the intermediate value determiner 110 comprises an input for each bit of the binary words of a pair of binary words. For example, if each binary word comprises four bits, the intermediate value determiner comprises eight inputs, one for each bit of the two binary words of the pair of binary words.

In connection with the description of the apparatus 100, it is assumed that the preceding processing of a pair of binary words before providing them to the apparatus 100 was faultless, if the binary words of the pair of binary words are equal or inverted to each other at the input of the apparatus 100. For example, if a first binary word of the pair of binary words comprises the value 1010 and the second binary word of the pair of binary words comprises the value 1010 (for the equal case) or 0101 (for the inverted case), the preceding processing of the pair of binary words was most likely faultless (excluding failures accidentally resulting in equal or inverted binary words).

In these two cases, for equal or inverted binary words, the intermediate value determiner 110 determines an intermediate binary word z equal to a reference binary word or the inverted referenced binary word. The reference binary word is a bit sequence with a predefined value. This predefined value may be arbitrarily defined, preferably it may be an all-0 bit sequence or an all-1 bit sequence (e.g. 0000 or 1111). The inverted reference binary word is equal to an inversion of the predefined bit sequence of the reference binary word (e.g. 1111 if the reference binary word is equal to 0000 or 0000 if the reference binary word is equal to 1111).

The intermediate value determiner 110 is implemented in a way that at least for a first pair of equal or inverted binary words the intermediate binary word is equal to the reference binary word and for a second pair of equal or inverted binary words the intermediate binary word z is equal to the inverted reference binary word. Therefore, if the first pair of equal or inverted binary words is provided to the intermediate value determiner 110 each bit of the intermediate binary word z comprises another value than in the case of providing the second pair of equal or inverted binary words to the intermediate value determiner 110. Therefore, stuck-at errors may be detectable based on the intermediate binary word z, since in this case at least one bit of the intermediate binary word stays constant.

A pair of unequal and uninverted (non-inverted) binary words indicates an error during the preceding processing of the pair of binary words. In this connection, the term uninverted means that the two binary words of a pair of binary words are not inverted to each other. The intermediate value determiner 110 determines the intermediate binary word z, so that the intermediate binary word z is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words. Therefore, the intermediate binary word z indicates also an error during the preceding processing, if the intermediate value determiner 110 works faultlessly.

Based on the intermediate binary word z, the error detector 120 is able to detect an erroneous preceding processing of a pair of binary words or an erroneous processing of a pair of binary words by the intermediate value determiner. For this, the error detector 120 determines and provides an error signal y as mentioned above.

For an erroneously working intermediate value determiner 110 (e.g. due to a stuck-at error) in combination with a pair of unequal and uninverted binary words of a pair of binary words, the error signal y may wrongly indicate a faultlessly working intermediate value determiner and a pair of equal or inverted binary words. However, as soon as a correct pair of equal or inverted binary words is provided to the intermediate value determiner 110, the error signal y correctly indicates the erroneously working intermediate value determiner 110, so that a detection of a stuck-at error within the intermediate value determiner 110 may be guaranteed over time.

An intermediate binary word z with the properties mentioned above can be obtained in various ways. For example, the intermediate value determiner 110 may determine a bit of the intermediate binary word z so that the bit of the intermediate binary word z is equal to a value derivable by an intermediate bit Boolean function depending on at least one bit u_(i), u_(i)′ of a pair of binary words u, u′ to be compared.

This general but complicated formulation is necessary, since a hardware implementation (the intermediate value determiner is usually implemented in hardware) of a Boolean function may be realized in various ways. Especially if several Boolean functions (for example one Boolean function for each bit of the intermediate binary word) are realized by a common hardware unit, logical units (and the transistors representing the logical units) may be used at least partly in common for the realization of more than one of the Boolean functions as well as an optimization of the hardware may simplify a Boolean function so that the original Boolean function is not directly identifiable in the concrete hardware implementation anymore. However, the resulting bit of the intermediate binary word z is still equal to a value derivable by the originally defined Boolean function, which is in this case called intermediate bit Boolean function.

For example, the intermediate bit Boolean function may depend on an XOR-combination (realized by a logical XOR combiner unit realizing a logical exclusive OR function) of a bit u_(i) of a first binary word u of the pair of binary words u, u′, a corresponding bit u_(i)′ of the second binary word u′ of the pair of binary words u, u′ and a common Boolean function ƒ. In this example, the common function ƒ depends on at least one bit u_(i) or u_(i)′ of the pair of binary words u, u′, which means that the common Boolean function ƒ is not constant (not equal to a constant value). Further, the common Boolean function ƒ is unequal to an XOR-combination and to an inverted XOR-combination of a bit u_(i) of the first binary word u of the pair of binary words u, u′ and a corresponding bit u_(i)′ of the second binary word u′ of the pair of binary words u, u′. In this case, an exclusive XOR-combination and an exclusive inverted XOR-combination of a bit of the first binary word and a corresponding bit of the second binary word 11 is meant. However, an XOR-combination of a bit u_(i) of the first binary word u and a corresponding bit u_(i)′ of the second binary word u′ and one or more further other bits of the first binary word u or the second binary word u′ are possible. For the common Boolean function ƒ the conditions

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠const

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′ for i=1, . . . , n

and

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′⊕1 for i=1, . . . , n

should be satisfied.

Further, the intermediate bit Boolean function may depend on an XOR-combination with a binary constant A_(i). For example, the consideration of a binary constant equal to 1 results in an inversion of the remaining part of the intermediate bit Boolean function. On the other hand, the intermediate bit Boolean function stays unchanged if a binary constant equal to 0 is considered. By considering binary constants for the determination of the intermediate binary word z, an arbitrary bit sequence can be predefined for the reference binary word (e.g. an all-0 or all-1 bit sequence).

For the determination of the whole intermediate binary word z, each bit z_(i) of the intermediate binary word z is equal to a value derivable by an individual intermediate bit Boolean function. Preferably, the individual intermediate bit Boolean functions are different from each other. In other words, each bit z_(i) of the intermediate binary word z may be derivable based on a different intermediate bit Boolean function. Otherwise, the intermediate binary word z would contain unnecessary redundant data.

As mentioned above, an intermediate bit Boolean function may depend, among others, on a common Boolean function. The common Boolean function may be the same Boolean function for each (individual) intermediate bit Boolean function of the bits z_(i) of the intermediate binary word z. In other words, each bit z_(i) of the intermediate binary word z may be equal to a value derivable by an individual intermediate bit Boolean function, each individual intermediate bit Boolean function depending on the same common Boolean function. In other words, each individual intermediate bit Boolean function comprises a part that is the same for all intermediate bit Boolean functions, and a part that is different from all other intermediate bit Boolean functions (making the intermediate bit Boolean function individual).

The common Boolean function ƒ may depend linearly or nonlinearly on the bits u_(i), u_(i)′ of a pair of binary words u, u′. For example, the common Boolean function ƒ may depend linearly on at least one bit u_(i), u_(i)′ of a pair of binary words u, u′ without any nonlinear dependency on a bit u_(i), u_(i)′ of the pair of binary words u, u′. In another example, the common Boolean function ƒ may depend nonlinearly on a bit u_(i), u_(i)′ of a pair of binary words u, u′ without any linear dependency on a bit u_(i), u_(i)′ of the pair of binary words u, u′. Further, it may also be possible that the common Boolean function ƒ may depend linearly on a first bit u_(i), u_(i)′ of a pair of binary words u, u′ and depend nonlinearly on a second bit u_(j), u_(j)′ of the pair of binary words u, u′.

In some embodiments, a number of bits of a binary word of a pair of binary words u, u′ is equal to or larger than a number of bits of the intermediate binary word z. Preferably, a number of bits of a binary word of a pair of binary words u, u′ is equal to a number of bits of the intermediate binary word z, so that a high error detection probability can be achieved.

Some embodiments relate to an error detector 120 configured to provide an error signal y with a number of bits lower than a number of bits of the intermediate binary word z.

For example, it might be sufficient to provide an error signal with one bit width. This 1-bit-signal may be equal to 0 if the intermediate value determiner 110 works faultlessly and the binary words of the pair of binary words are equal or inverted to each other, and equal to 1 otherwise or the other way around. In other words, the error signal y may be a 1-bit-signal and the error detector 120 may provide the error signal y with a first bit value (0 or 1) for equal or inverted binary words of a pair of binary words u, u′, if the intermediate value determiner 120 works faultlessly, and for a faultlessly working intermediate value determiner 120, if the binary words of a pair of binary words u, u′ are equal. Further, the error detector 120 may provide the 1-bit-signal with a second bit value (correspondingly 1 or 0) for unequal and uninverted binary words of a pair of binary words u, u′ or an erroneously working intermediate value determiner 110.

Alternatively, the error signal y may be a signal with two bit width. This 2-bit-signal can indicate more states than the 1-bit-signal mentioned before (faultless state or erroneous state). For example, the 2-bit-error signal y may indicate whether the intermediate binary word is equal to the reference binary word or the inverted reference binary word. Further, stuck-at failures at the output of the error detector 120 may also be detectable, since the 2-bit-signal may change between two error bit sequences (predefined bit sequences for the different states to be indicated by the error signal) for different pairs of equal or inverted binary words (e.g. the first pair of equal or inverted binary words and the second pair of equal or inverted binary words as mentioned above). In other words, the error signal y may be a 2-bit-signal and the error detector 120 may provide the error signal y with a first error bit sequence (e.g. 01) for a first pair of equal or inverted binary words and with the inverted first error bit sequence (e.g. 10) for a second pair of equal or inverted binary words, if the intermediate value determiner 110 and the error detector 120 work faultlessly. Further, the error detector may provide the error signal y with a second error bit sequence (e.g. 00 or 11) for a pair of unequal and uninverted binary words, if the intermediate value determiner 110 and the error detector 120 work faultlessly, or for an erroneously working intermediate value determiner 110 or an erroneously working error detector 120, if the binary words u, u′ of the pair of binary words are equal or inverted to each other. The second error bit sequence is unequal to the first bit error sequence and to the inverted first error bit sequence.

In the following, some embodiments are described in more detail. In this connection, several additional and/or optional features are described, which can be implemented all together or some of them may be implemented independent from each other in combination with the basic concept described above. Since the apparatus described above compares pairs of binary words, it may also be called a comparator in the following. Further, the error detector is also called an allocator.

FIG. 2 shows a comparator 200 for comparing two n digit data words u=u₁, . . . , u_(n) and u′=u₁′, . . . , u_(n)′ consisting of an intermediate value determiner Zw 21 having 2n inputs and n outputs, at which n intermediate values z=z₁ . . . , z_(n) (bits of the intermediate binary word) are output and which comprises an allocator ZU 22 (error detector) having n inputs and r≧1 outputs which are connected downstream. The n inputs of the allocator 22 are connected to the corresponding n outputs of the intermediate value determiner 21 while outputting an r-component error signal at its r outputs.

The intermediate value determiner Zw 21 is configured so that the intermediate values z=z₁, . . . , z_(n) (intermediate binary word) output at its n outputs are determined from the bits of the data words u=u₁, . . . , u_(n) and u′=u₁′ . . . , u_(n)′ to be compared according to the relations

z₁ = A₁ ⊕ u₁ ⊕ u₁^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) z₂ = A₂ ⊕ u₂ ⊕ u₂^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) ⋮ z_(n) = A_(n) ⊕ u_(n) ⊕ u_(n)^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)),

wherein ƒ(u₁, u₁′, . . . , u_(n), u_(n)′) is a Boolean function (common Boolean function), for which

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠const

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′ for i=1, . . . , n

and

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′⊕1 for i=1, . . . , n

apply. Here, A₁, . . . , A_(n) are binary constants. Further, z_(i) is a bit of the intermediate binary word z, A_(i) is a binary constant, u_(i) is a bit of a first binary word u of the pair of binary words, u′_(i) is a bit of the second binary word u′ of the pair of binary words, i indicates a position of a bit within a binary word and f(u₁, u′₁, . . . , u_(n), u′_(n)) is a common Boolean function.

The allocator 22 is configured so that when inputting the intermediate values z an r-dimensional error signal y(z)=y₁(z), . . . , y_(r)(z) with r≧1 is output at its r-dimensional output, so that

y(A₁, A₂, . . . , A_(n)) and y(A₁⊕1, A₂⊕1, . . . , A_(n)⊕1)=y(Ā₁, . . . , Ā_(n)) represent a value which does not indicate an error.

For all values z₁, z₂, . . . , z_(n) which are not equal to A₁, A₂, . . . , A_(n) and which are not equal to A₁⊕1, A₂β1, . . . , A_(n)⊕1, the error signal y represents a value which indicates an error.

If, for example, r=2, then

y(z ₁ , z ₂ , . . . , z _(n))=[y ₁(z ₁ , z ₂ , . . . , z _(n)),y ₂(z ₁ , z ₂ , . . . , z _(n))]

and y₁ and y₂ may be realized in a special implementation as

${y_{1}\left( {z_{1},z_{2},\ldots \mspace{14mu},z_{n}} \right)} = \overset{\_}{\overset{n}{\underset{i = 1}{}}\left( {z_{i} \oplus A_{i}} \right)}$ and ${y_{2}\left( {z_{1},z_{2},\ldots \mspace{14mu},z_{n}} \right)} = {\overset{n}{\underset{j = 1}{}}\left( {z_{j} \oplus A_{j}} \right)}$

wherein y₁ (z₁, z₂, . . . , z_(n)) is the first bit of the error signal, y₂ (z₁, z₂, . . . , z_(n)) is the second bit of the error signal, z_(i), z_(j) is a bit of the intermediate binary word, A_(i), A_(j) is a binary constant and i, j is an indices indicating a position of a bit within the intermediate binary word.

If  z = (A₁, …  , A_(n)) ${y_{1}\left( {A_{1},A_{2},\ldots \mspace{14mu},A_{n}} \right)} = {\overset{\_}{\overset{n}{\underset{i = 1}{}}\left( {A_{i} \oplus A_{i}} \right)} = 1}$ and ${y_{2}\left( {A_{1},A_{2},\ldots \mspace{14mu},A_{n}} \right)} = {{\overset{n}{\underset{j = 1}{}}\left( {A_{j} \oplus A_{j}} \right)} = 0}$

results.

${{{If}\mspace{14mu} z} = \left( {{A_{1} \oplus 1},\ldots \mspace{14mu},{A_{n} \oplus 1}} \right)},{{y_{1}\left( {{A_{1} \oplus 1},{A_{2} \oplus 1},\ldots \mspace{14mu},{A_{n} \oplus 1}} \right)} = {\overset{\_}{\overset{n}{\underset{i = 1}{}}\left( {A_{i} \oplus 1 \oplus A_{i}} \right)} = 0}}$ and ${y_{2}\left( {{A_{1} \oplus 1},{A_{2} \oplus 1},\ldots \mspace{14mu},{A_{n} \oplus 1}} \right)} = {{\overset{n}{\underset{j = 1}{}}\left( {A_{j} \oplus 1 \oplus A_{j}} \right)} = 1}$

results.

If u=u′ and thus z=A₁, . . . , A_(n) or z=(A₁⊕1, . . . , A_(n)⊕1), then y=[y₁, y₂]ε{(0,1),(1,0)} and the proposed circuitry outputs a two-rail value (01) or (10).

If u≠u′ and u≠ū then z≠A₁, . . . , A_(n) and z≠(A₁1, . . . , A_(n)⊕1).

There is then at least one component z_(j)≠A_(j) and at least one component z_(k)≠A_(k)⊕1, from which y₁=0 and y₂=0 result, and the fact that u≠u′ is then detected because y₁=y₂=0 is not a two-rail value.

If r=1, then y(z)=y₁(z) and y₁ may for example be selected to be

${y_{1}(z)} = {{\overset{\_}{\overset{n}{\underset{i = 1}{}}\left( {z_{i} \oplus A_{i}} \right)} \oplus}\overset{n}{\underset{j = 1}{}}{\left( {z_{j} \oplus A_{j}} \right).}}$

wherein y₁ (z₁, . . . , z_(n)) is the error signal, z_(i), z_(j) are bits of the intermediate binary word, i,j are indices indicating a position number of a bit within the intermediate binary word and A_(i), A_(j) are binary constants.

If u=u′ and thus z=A₁, . . . , A_(n) or z=(A₁⊕1, . . . , A_(n)⊕1), then y₁=1. If u≠u′ and u≠ū′ then z≠A₁, . . . , A_(n) and z≠(A₁⊕1, . . . , A_(n)⊕1), then y₁=0.

Now, the special case is considered that the binary constants A₁, A₂, . . . , A_(n) are all equal to 0.

If again for example r=2, then

y(z₁, . . . , z_(n))=[y₁(z₁, . . . , z_(n)), y₂(z_(l), . . . , z_(n))]. If now additionally, as assumed, A₁=A₂= . . . A_(n)=0, then an error is indicated, when y(z₁, . . . , z_(n)) is not equal y(0, . . . , 0) or not equal y(1, . . . , 1).

In this case, the values y₁ and y₂ may then be determined so that

${y_{1}\left( {z_{1},\ldots \mspace{14mu},y_{n}} \right)} = \overset{\_}{\overset{n}{\underset{i = 1}{}}z_{i}}$ and ${y_{2}\left( {z_{1},\ldots \mspace{14mu},y_{n}} \right)} = {\overset{n}{\underset{j = 1}{}}z_{j}}$

applies.

No error is indicated when z₁, . . . , z_(n) either equals 0, . . . , 0 or equals 1, . . . , 1. If no error is present, then y₁, y₂ε{(0,1), (1,0)} and y₁, y₂ form a two-rail value (2-bit signal, error signal with 2 bit width). An error is indicated when y₁,y₂ε{(0,0) (1,1)} applies. This is always the case here, when z₁, . . . , z_(n) unequal 0, . . . , 0 or unequal 1, . . . , 1 or when, for example, a stuck-at error occurs on one of the lines carrying the values y₁ and y₂. Now the case is considered that r=1, wherein it is again assumed that A₁= . . . =A_(n)=0.

If r=1, then y=y₁ may be realized in a special implementation of the proposed concept as

${y_{1}\left( {z_{1},\ldots \mspace{14mu},y_{n}} \right)} = {{\overset{\_}{\overset{n}{\underset{i = 1}{}}\left( z_{i} \right)} \oplus}\overset{n}{\underset{j = 1}{}}{\left( z_{j} \right).}}$

Then y₁(1, 1, . . . , 1)=y₁(0, 0, . . . , 0)=0 applies and no error is indicated. In all other cases, i.e. for z₁, . . . , z_(n) unequal 0, . . . , 0 and unequal 1, . . . , 1, y₁(z₁, z₂, . . . , z_(n))=1 applies, and an error is indicated.

For explaining the functioning and the improvement of error detection in the running operation, the case is considered that u=u′. Then the following applies

z₁ = A₁ ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) z₂ = A₂ ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) ⋮ z_(n) = A_(n) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)),

and depending on whether ƒ(u₁, u₁′, . . . , u_(n), u_(n)′) is equal 0 or equal 1, the following applies,

z₁ = A₁ z_(2 ) = A₂ ⋮ z_(n) = A_(n) or z₁ = A₁ ⊕ 1 z₂ = A₂ ⊕ 1 ⋮ z_(n) = A_(n) ⊕ 1

and the intermediate values z, depending on the function value of the Boolean function ƒ (common Boolean function) take on complementary values to each other. As the function value of the function ƒ depends on the concrete values of the data words to be compared, the intermediate values (intermediate binary word) change their value depending on the data words (binary words) to be compared. Stuck-at errors on the outputs of the intermediate value determiner Zw 21 are thus detected in the running operation in contrast to stuck-at-0 errors at the outputs of the XOR operator 17 (logical exclusive or) in FIG. 8.

As an example, now the case is considered for n=4

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)=u ₁

u₁ ′=u ₁ ⊕u ₁ ′⊕u ₁

u₁′

and A₁=A₂=A₃=0, A₄=1.

The intermediate values z=z₁, . . . , z₄ are then determined to be

z₁ = u₁u₁^(′) z₂ = u₂ ⊕ u₂^(′) ⊕ u₁u₁^(′) z₃ = u₃ ⊕ u₃^(′) ⊕ u₁u₁^(′) $z_{4} = {{{1 \oplus u_{4} \oplus u_{4}^{\prime} \oplus u_{1}}u_{1}^{\prime}} = {u_{4} \oplus u_{4}^{\prime} \oplus {\overset{\_}{u_{1}u_{1}^{\prime}}.}}}$

In this embodiment, the error signals y₁ and y₂ may be determined by

$y_{1} = \overset{\_}{z_{1}\bigvee z_{2}\bigvee z_{3}\bigvee\overset{\_}{z_{4}}}$ and $y_{2} = {z_{1}\bigwedge z_{2}\bigwedge z_{3}\bigwedge{\overset{\_}{z_{4}}.}}$

FIG. 3 shows the corresponding proposed comparator setup 300 from an intermediate value determiner Zw 311 and a downstream allocator ZU 312. The intermediate value determiner consists of an AND gate 31 (logical and) having two inputs and one output, and an OR gate 32 (logical or) having two inputs and one output, three XOR gates 33, 34 and 35 having three inputs and one output and one negator 36.

The allocator 312 consists of an NOR gate 39 (logical not or) having four inputs and one output and an AND gate 310 having four inputs and one output and two negators 37 and 38.

The first input of the AND gate 31 is connected to the input line carrying the signal u₁ wherein the line is simultaneously connected to the first input of the OR gate 32. The second input of the AND gate 31 is connected to the input line carrying the signal u₁′ wherein the line is simultaneously connected to the second input of the OR gate 32. The output of the OR gate 32 is simultaneously connected to the first input of the XOR gate 33, the XOR gate 34 and, via an inverter 36, to the first input of the XOR gate 35. The second input of the XOR gate 33 is connected to the line carrying the input signal u₂, while the third input of the XOR gate 33 is connected to the input line carrying the input signal u₂′. The second input of the XOR gate 34 is connected to the line carrying the input signal u₃, while the third input of the XOR gate 34 is connected to the input line carrying the input signal u₃′. The second input of the XOR gate 35 is connected to the line carrying the input signal u₄, while the third input of the XOR gate 34 is connected to the input line carrying the input signal u₄′.

The outputs of the AND gate 31, the XOR gate 33, the XOR gate 34 and the XOR gate 35 carry the intermediate signals z₁, z₂, z₃, z₄ of the intermediate value determiner Zw 311. These outputs are connected to the inputs of the allocator ZU 312 which is setup from the NOR gate 39, the AND gate 310 and the negators 37 and 38.

The output of the AND gate 31 carrying the intermediate signal z₁ is connected both to the first input of the NOR gate 39 and also to the first input of the AND gate 310. The output of the XOR gate 33 carrying the intermediate signal z₂ is connected both to the second input of the NOR gate 39 and also to the second input of the AND gate 310. The output of the XOR gate 34 carrying the intermediate signal z₃ is connected both to the third input of the NOR gate 39 and also to the third input of the AND gate 310. The output of the XOR gate 35 carrying the intermediate signal z₄ is connected both to the fourth input of the NOR gate 39 via the inverter 37 and also to the fourth input of the AND gate 310 via the inverter 38.

The output of the NOR gate 39 carries or guides the error detection signal while the output of the AND gate 310 carries the error signal y₂.

If for i=1, . . . , n, u_(i)=u_(i)′ applies, then z₁=z₂=z₃=1, and z₄=0, when u₁=u₁′=1, and thus ƒ(u₁, u₁′, . . . , u_(n), u_(n)′)=1, and z₁=z₂=z₃=0, and z₄=1, when u₁=u₁′=0 and thus

ƒ(u₁, u₁′, . . . , u_(n), u_(n)′)=0. In the first case y₁, . . . , y₂=(1, 0) and in the second case y₁, y₂=(0, 1) applies. If for example u₂≠u₂′ and u₁=u₁′, u₃=u₃, u₄=u₄′ then z₁=u₁

u₁′, z₂=1⊕(u₁

u₁′), z₃=u₁

u₁′ and z₄=1⊕(u₁

u₁′) and for u₁=u₁′=1, it is z₁=z₃=1, z₂=z₄=0 and y₁=y₂=1, which indicates an error. Correspondingly, for u₁==0 it results that z₁=z₃=0, z₂=z₄=1 and also y₁=Y₂=1, which again indicates an error.

If the intermediate value determiner Zw 311 is optimized together with the allocator ZU 312, then the inverter 36 of the intermediate value determiner 311 and the two inverters 38 and 37 of the allocator may be omitted, as they mutually compensate with respect to their effect.

Now the case is considered that the function ƒ is a linear function, wherein

$\begin{matrix} {{f\left( {u_{1},u_{1}^{\prime},\ldots \mspace{14mu},u_{n},u_{n}^{\prime}} \right)} = {{a_{1}u_{1}} \oplus \ldots \oplus {a_{n}u_{n}} \oplus {b_{1}u_{1}^{\prime}} \oplus \ldots \oplus {b_{n}u_{n}^{\prime}}}} & (1) \\ {{{with}\mspace{14mu} a_{i}},{b_{j} \in \left\{ {0,1} \right\}},} & \; \\ {{{a_{i}\bigwedge b_{i}} = {{0\mspace{14mu} {for}\mspace{14mu} i} = 1}},\ldots \mspace{14mu},n} & (2) \\ {and} & \; \\ {{\overset{n}{\underset{i = 1}{}}{a_{i}\bigvee}\overset{n}{\underset{j = 1}{}}b_{j}} = 1} & (3) \end{matrix}$

apply.

Condition (2) guarantees that for all iε{1, . . . , n}, ƒ(u₁, u₁′, . . . , u_(n), u_(n)′)≠u_(i)⊕u_(i)′ and ƒ(u₁, u₁′, . . . , u_(n), u_(n)′)≠u_(i)⊕u_(i)′⊕1 applies, and condition (3) guarantees that ƒ(u₁, u₁′, . . . , u_(n), u_(n)′) is no constant.

As an example, now the case is considered that n=4, a₁=a₂=a₃=a₄=0 and b₁=1, b₂=b₃==0 for jε{1, . . . , n} and A_(k)=0 for k=ε{1,2,3,4} and r=2.

ƒ(u₁, u₁′, . . . , u₄, u₄′)=u₁′ applies then and the intermediate values z₁, z₂, z₄ (bits of the intermediate binary word) are determined by

z ₁ =u ₁,

z ₂ =u ₂ ⊕u ₂ ′⊕u ₁′,

z ₃ =u ₃ ⊕u ₃ ′⊕u ₁′,

z ₄ =u ₄ ⊕u ₄ ′⊕u ₁′,

In the described embodiment, the error signals y₁ and y₂ may be determined by

y₁ = z₁z₂z₃z₄ and $y_{2} = {\overset{\_}{z_{1}z_{2}z_{3}z_{4}}.}$

FIG. 4 shows the associated circuit for the proposed comparator 400. The comparator 400 of FIG. 4 consists of an intermediate value determiner Zw 411 having 2·4=8 inputs at which the bits u₁, u₁′, u₂, u₃, u₃′, u₄, u₄′ (bits of the binary words of a pair of binary words) to be compared are applied, and four outputs at which the four intermediate values z₁, z₂, z₃, z₄ are output, and an allocator ZU 412 which is connected downstream from the intermediate value determiner Zw 411. The allocator ZU 412 has four inputs for inputting the four intermediate values z₁, . . . , z₄ which are connected to the corresponding outputs of the intermediate value determiner Zw 411, and two outputs 49 and 410 for outputting the error signals y₁ and y₂ (representing an error signal with 2 bit width).

The input of the intermediate value determiner carrying the input signal u₁ is directly connected through to the output carrying the intermediate value z₁. The input carrying the input signal u₁′ is connected to the first input each of an XOR gate 41, an XOR gate 43 and an XOR gate 45. To the second input of the XOR gate 41, whose output is connected to the first input of an XOR gate 42, the input carrying the input signal u₂ is connected. To the second input of the XOR gate 42, whose output carries the intermediate signal z₂, the input carrying the input signal u₂′ is connected. To the second input of the XOR gate 43, whose output is connected to the first input of an XOR gate 44, the input carrying the input signal u₃ is connected. To the second input of the XOR gate 44, whose output carries the intermediate signal z₃, the input carrying the input signal u₃′ is connected. To the second input of the XOR gate 45, whose output is connected to the first input of an XOR gate 46, the input carrying the input signal u₄ is connected. To the second input of the XOR gate 46, whose output carries the intermediate signal z₄, the input carrying the input signal u₄′ is connected.

The allocator ZU 412 consists of an OR gate 47 having four inputs and an output 49 carrying the error signal y₁ and an NAND gate 48 (logical not and) having four inputs and an output 410 carrying the error signal y₂.

For i=1, . . . , 4, the i-th output of the intermediate value determiner Zw 411 carrying the intermediate signal z_(i) is connected to the i-th input both of the OR gate 47 and also to the i-th input of the NAND gate 48.

It is advantageous with this proposed comparator, that all XOR gates 41, . . . , 46 can be tested in the running operation without an error having to exist in the input data. At the two inputs of the XOR gate 41, the values u₁′ and u₂ are applied. It is obvious that values (0, 0), (0, 1), (1, 0), (1, 1) are applied at this XOR gate, when for example u=u′ takes on the non-interfered values (0000), (0100), (1011), (1100).

Further, at the two inputs of the XOR gate 42 all possible input values (00), (10), (10), (11) are applied, when for example u=u′ takes on the values (0000), (0100), (1011), (1010). For the remaining XOR gates 43, 44, 45, 46 it may be seen analogously that with suitable inputs u=u′ indeed all possible four value combinations (00), (01), (10), (11) are input into the corresponding gates, whereby their complete testability is given in the running operation when a sufficient number of different input values u=u′ is available. Thus, these gates can be completely tested in the running operation.

In some embodiments the apparatus for comparing pairs of binary words further comprises a mapper. This mapper may be connected to an intermediate value determiner and may provide a pair of binary words to be compared to the intermediate value determiner based on a pair of input binary words. In this connection, the mapper may map pairs of input binary words to pairs of binary words to be compared, so that the number of different possible pairs of binary words to be compared is larger than a number of different possible pairs of input binary words.

In this way, a limitation of a number of different possible pairs of input binary words, which is caused for example by a preceding processing using only this limited number of different binary words, can be compensated by mapping this limited number of different possible pairs of input binary words to a larger number of different possible pairs of binary words to be compared. In this way, a change of the intermediate binary word from the reference binary word to the inverted reference binary word occurs more frequently, so that especially stuck-at failures within the intermediate value determiner can be detected more efficiently (e.g. faster).

The mapper can be implemented in various ways. For example, two linear feedback shift registers (LFSR) may be used. In this case, a first linear feedback shift register may determine a first binary word of a pair of binary words to be compared based on a first binary word of a pair of input binary words and a second linear feedback shift register may determine the second binary word of the pair of binary words to be compared based on the second binary word of the pair of input binary words.

A more detailed example of an apparatus 500 for comparing pairs of binary words u, u′, w, w′ with a mapper 530 comprising two linear feedback shift registers 51, 52 is shown in FIG. 5.

In FIG. 5, two linear feedback shift registers 51 and 52 are connected upstream from the self-testing comparator. If the data inputs u=u₁, . . . , u_(N) and u′=u₁′, . . . , u_(N)′ only take on few values it may thus be achieved that at the inputs of the intermediate value determiner 53 many different values are applied. The input values w₁, . . . , w_(n) and w₁′, . . . , w_(n)′ of the intermediate value determiner 53 result from the input values u=u₁, . . . , u_(N) and u′=u₁′, . . . , u_(N)′ by the fact that components of the state values of the linear feedback shift registers 51 and 53 are XOR-ed (combined by a logical XOR function) with corresponding components of the input values u or u′. To simplify the description it is in the following for example assumed that N=n. It may also be sensible, that N>n or also that N<n.

In FIG. 5, the data inputs u₁, u₂, . . . , u_(n) are guided into a first LSFR 51 in parallel. The data inputs u₁′, u₂′, . . . , u_(n)′ are guided into a second LSFR 52 in parallel. The outputs w₁, . . . , w_(n) of the first LSFR 51 and the outputs w₁′, . . . , w_(n)′ of the second LSFR 52 form the inputs of the intermediate value determiner Zw 53. Alternatively it is for example also possible here that the outputs of the shift registers 51 and 52 are simply the components of their states, which are XOR-ed with the components of the data inputs u₁, u₂, . . . , u_(n) and u₁′, u₂′, . . . , u_(n)′, so that the state transition of the linear feedback shift registers may be executed independent of the input values u₁, u₂, . . . , u_(n) and u₁′, u₂′ . . . , u_(n)′.

The remaining setup (intermediate value determiner 53 and allocator 54) corresponds to the illustration of FIG. 2.

The two LSFRs (51 and 52) run synchronously in normal operation, realize the same state transition function and are started with the same starting state. The state transition function may here be implemented so that all possible states of the LSFR, except the state 00 . . . 0, are passed cyclically.

The setup of the LSFR 51 and 52 and the linking of the components of the states with the components of the input value is now to be explained in detail for a special embodiment.

In the embodiment above, the state of the first LSFR 51 is connected component after component to data inputs u₁, u₂, . . . , u_(n), XOR-ed, and forms the values w₁, . . . , w_(n). The state of the second LSFR 52 is XOR-ed component after component with data inputs u₁, u₂, . . . , u_(n) and forms the values w₁′, . . . , w_(n)′.

In FIG. 6 it is illustrated as an example how the data inputs may be connected to the components of an LSFR. In FIG. 6, the LSFR consist of the flip-flops 61, 62, . . . , 65 (FF₀, . . . , FF₄). The output of the XOR gate 611 forms the input of the flip-flop 61. The output of the flip-flop 61 is connected to the first input of the XOR gate 612 and the line which carries the output value w₁. The output of the XOR gate 612 forms the input of the flip-flop 62. The output of the flip-flop 62 is connected to the first input of the XOR gate 613 and to the line which carries the output value w₂. The output of the XOR gate 613 forms the input of the flip-flop 63. The output of the flip-flop 63 is connected to the first input of the XOR gate 614 and to the line which carries the output value w₃. The output of the XOR gate 614 forms the input of the flip-flop 64. The output of the flip-flop 64 is connected to the first input of the XOR gate 615 and to the line which carries the output value w₄. The output of the XOR gate 615 forms the input of the flip-flop 65. The output of the flip-flop 65 is connected to the first input of the XOR gate 611, the third input of the XOR gate 613 and to the line which carries the output value w₅.

The data input which carries the signal u₁ is guided into the second input of the XOR gate 611. The data input which carries the signal u₂ is guided into the second input of the XOR gate 612. The data input which carries the signal u₃ is guided into the second input of the XOR gate 613. The data input which carries the signal u₄ is guided into the second input of the XOR gate 614. The data input which carries the signal u₅ is guided into the second input of the XOR gate 615.

The intermediate value determiner 110, the error detector 120, the mapper 530 and/or other optional units may be independent hardware units or part of a computer, a digital signal processor or a microcontroller as well as a computer program or a software product for running on a computer, a digital signal processor or a microcontroller. The intermediate value determiner 110, the bit error corrector 120, the mapper 530 and/or other optional components may be implemented independent from each other or may be realized at least partially together.

Some embodiments relate to an apparatus for comparing pairs of binary words u, u′ comprising a means for determining an intermediate binary word and a means for providing an error signal. The means for determining an intermediate binary word is configured to determine an intermediate binary word z so that the intermediate binary word z is equal to a reference binary word for a first pair of equal or inverted binary words, so that the intermediate binary word z is equal to the inverted reference binary word for a second pair of equal or inverted binary words and so that the intermediate binary word z is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words if the means for determining an intermediate binary word works faultlessly. The first pair of equal or inverted binary words is different from the second pair of equal or inverted binary words. Further, the means for providing an error signal is configured to provide an error signal y based on the intermediate binary word z so that the error signal y indicates whether or not the binary words u, u′ of a pair of binary words are equal or inverted, if the means for determining an intermediate binary word works faultlessly, and indicates whether or not the means for determining an intermediate binary word works faultlessly if the binary words u, u′ of a pair of binary words are equal or inverted.

FIG. 7 shows a flowchart of a method 700 for comparing pairs of binary words u, u′ according to an embodiment. The method 700 comprises determining 710 an intermediate binary word z so that the intermediate binary word z is equal to a reference binary word for a first pair of equal or inverted binary words, so that the intermediate binary word z is equal to the inverted reference binary word for a second pair of equal or inverted binary words and so that the intermediate binary word z is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words, if the intermediate binary word is determined faultlessly. The first pair of equal or inverted binary words is different from the second pair of equal or inverted binary words. Further, the method 700 comprises providing 720 an error signal y based on the intermediate binary word z, so that the error signal y indicates whether or not the binary words u, u′ of a pair of binary words are equal or inverted, if the intermediate binary word is determined faultlessly, and indicates whether or not the intermediate binary word is determined faultlessly if the binary words u, u′ of a pair of binary words are equal or inverted.

Additionally, the method 700 may comprise further steps representing one or more of the optional aspects of the proposed concept described above.

Some embodiments relate to a self-checking comparator. The comparator may enable an improvement of the error detection in the running operation. Additionally, the comparator may not require an additional periodic input signal in comparison to known comparators.

A circuitry for comparing two n-component data words u=u₁, . . . , u_(n) and u′=u₁′, . . . , u_(n)′ may comprise an intermediate value determiner Zw having 2n inputs and n outputs for generating intermediate values z=z₁, . . . , z_(n) is present, wherein at the 2n inputs at the right position the data words u=u₁, . . . , u_(n) and u′=u₁′, . . . , u_(n)′ are applied and at the n outputs the intermediate values z=z₁, . . . , z_(n) formed by the intermediate value determiner are output. Further, the intermediate value determiner is configured so that the intermediate values are formed according to the relations

z₁ = A₁ ⊕ u₁ ⊕ u₁^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) z₂ = A₂ ⊕ u₂ ⊕ u₂^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) ⋮ z_(n) = A_(n) ⊕ u_(n) ⊕ u_(n)^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′))

by the intermediate value determiner Zw, wherein the function ƒ(u₁, u₁′, . . . , u_(n), u_(n)′) is a 2n digit Boolean function which determined in such a way that

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠const

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′ for i=1, . . . , n

and

ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′ for i=1, . . . , n

apply and wherein A₁, . . . , A_(n) are binary constants and n≧2. Further, the circuitry comprises an allocator ZU having n inputs and r outputs for forming an r digit error signal y(z)=[y₁(z), . . . , y_(r)(z)] with r≧1 of an intermediate value z=z₁, . . . , z_(r) to whose n inputs the n outputs of the intermediate value determiner Zw are connected and whose r outputs output an r digit error signal y(z)=[y₁(z), . . . , y_(r)(z)]. The allocator is configured so that error signals y(A)=[y₁(A), . . . , y_(r)(A)] and y(Ā)=[y₁(Ā), . . . , y_(r)(Ā)] are allocated to the intermediate values A=A₁, . . . , A_(n) and Ā=Ā₁, . . . , Ā_(n) by the allocator ZU, wherein the error signals indicate no error, and to each intermediate value z which is not equal to A and not equal to Ā, an error signal y(z) is allocated which is different from y(A) and y(Ā) and which signalizes a difference in the n-component data words u=u₁, . . . , u_(n) and u′=u₁′, . . . , u_(n)′.

According to an aspect

ƒ(u ₁ , u ₁ ′, . . . , u _(n) u _(n)′)=a ₁ u ₁ ⊕ . . . ⊕a _(n) u _(n) ⊕b ₁ u ₁ ′⊕ . . . ⊕b _(n) u _(n)′  (4)

with a_(i), b_(j)ε{0,1} is a linear Boolean function and

$\begin{matrix} {{{a_{i}\bigwedge b_{i}} = {{0\mspace{14mu} {for}\mspace{14mu} i} = 1}},{\ldots \mspace{14mu} n}} & (5) \\ {and} & \; \\ {{\overset{n}{\underset{i = 1}{}}{a_{i}\bigvee}\overset{n}{\underset{j = 1}{}}b_{j}} = 1} & (6) \\ {{apply}.} & \; \end{matrix}$

For example, ƒ(u₁, u₁′, . . . , u_(n), u_(n)′)=u_(i) for iε{1, . . . , n}.

In another example, ƒ(u₁, u₁′, . . . , u_(n), u_(n)′)=u_(j)′ for jε{1, . . . , n}.

According to another aspect r=2.

For example, the allocator ZU may be implemented so that the two components y₁ and y₂ of the error detection signal formed by the allocator ZU are formed according to the relations

${y_{1}\left( {z_{1},z_{2},\ldots \mspace{14mu},z_{n}} \right)} = \overset{\_}{\overset{n}{\underset{i = 1}{}}\left( {z_{i} \oplus A_{i}} \right)}$ and ${y_{2}\left( {z_{1},z_{2},\ldots \mspace{14mu},z_{n}} \right)} = {\overset{n}{\underset{j = 1}{}}{\left( {z_{j} \oplus A_{j}} \right).}}$

Alternatively r=1.

In this case, the allocator ZU may be implemented so that the error signal y₁ formed by the allocator ZU is formed according to the relation

${y_{1}\left( {z_{1},\ldots \mspace{14mu},y_{n}} \right)} = {{\overset{\_}{\overset{n}{\underset{i = 1}{}}\left( z_{i} \right)} \oplus}\overset{n}{\underset{j = 1}{}}{\left( z_{j} \right).}}$

According to another aspect, the binary constants A₁, . . . , A_(n) are equal to 0.

Alternatively, the binary constants A₁, . . . , A_(n) are equal to 1.

In a further alternative, at least one of the binary constants A₁, . . . , A_(n) is equal to 1 and at least one of the binary constants is equal to 0.

For example, the intermediate value determiner and the allocator may be at least partially realized together.

Although some aspects of the described concept have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a feature of a method step. Analogously, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus.

Depending on certain implementation requirements, embodiments of the invention can be implemented in hardware or in software. The implementation can be performed using a digital storage medium, for example a floppy disk, a DVD, a Blue-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective method is performed. Therefore, the digital storage medium may be computer readable.

Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that one of the methods described herein is performed.

Generally, embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code may for example be stored on a machine readable carrier.

Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.

In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.

A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein.

A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein. The data stream or the sequence of signals may for example be configured to be transferred via a data communication connection, for example via the Internet.

A further embodiment comprises a processing means, for example a computer, or a programmable logic device, configured to or adapted to perform one of the methods described herein.

A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.

In some embodiments, a programmable logic device (for example a field programmable gate array) may be used to perform some or all of the functionalities of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.

The above described embodiments are merely illustrative for the principles of the present invention. It is understood that modifications and variations of the arrangements and the details described herein will be apparent to others skilled in the art. It is the intent, therefore, to be limited only by the scope of the impending patent claims and not by the specific details presented by way of description and explanation of the embodiments herein. 

1. Apparatus for comparing pairs of binary words (u, u′), the apparatus comprising: an intermediate value determiner configured to determine an intermediate binary word (z), so that the intermediate binary word (z) is equal to a reference binary word for a first pair of equal or inverted binary words, so that the intermediate binary word (z) is equal to an inversion of the reference binary word for a second pair of equal or inverted binary words and so that the intermediate binary word (z) is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words, if the intermediate value determiner works faultlessly, wherein the first pair of equal or inverted binary words is different from the second pair of equal or inverted binary words; and an error detector configured to provide an error signal (y) based on the intermediate binary word(z) so that the error signal (y) indicates whether or not the binary words (u, u′) of a pair of binary words are equal or inverted, if the intermediate value determiner works faultlessly, and indicates whether or not the intermediate value determiner works faultlessly, if the binary words (u, u′) of a pair of binary words are equal or inverted.
 2. Apparatus according to claim 1, wherein the intermediate value determiner is configured to determine a bit of the intermediate binary word (z), so that the bit of the intermediate binary word (z) is equal to a value derivable by an intermediate bit Boolean function depending on at least one bit (u_(i), u′_(i)) of the pair of binary words (u, u′) to be compared.
 3. Apparatus according to claim 2, wherein the intermediate bit Boolean function depends on an XOR-combination of a bit (u_(i)) of a first binary word (u) of the pair of binary words (u, u′), a corresponding bit (u′_(i)) of a second binary word (u′) of the pair of binary words (u, u′) and a common Boolean function (f), wherein the common Boolean function (f) depends on at least one bit (u_(i), u′_(i)) of the pair of binary words (u, u′), wherein the common Boolean function (f) is unequal to an XOR-combination and to an inverted XOR-combination of a bit (u_(i)) of the first binary word (u) of the pair of binary words (u, u′) and a corresponding bit (u′_(i)) of the second binary word (u′) of the pair of binary words (u, u′).
 4. Apparatus according to claim 3, wherein the intermediate bit Boolean function further depends on an XOR-combination with a binary constant (A_(i)).
 5. Apparatus according to claim 3, wherein each bit (z_(i)) of the intermediate binary word (z) is equal to a value derivable by an individual intermediate bit Boolean function.
 6. Apparatus according to claim 5, wherein each individual intermediate bit Boolean function depends on the same common Boolean function.
 7. Apparatus according to claim 3, wherein the common Boolean function (f) depends linearly on at least one bit (u_(i), u_(i)′) of the pair of binary words (u, u′) without any non-linear dependency on a bit (u_(i), u′_(i)) of the pair of binary words (u, u′).
 8. Apparatus according to claim 2, wherein the intermediate value determiner is configured to determine the bits (z_(i)) of the intermediate binary word (z) according to z₁ = A₁ ⊕ u₁ ⊕ u₁^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) z₂ = A₂ ⊕ u₂ ⊕ u₂^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)) ⋮ z_(n) = A_(n) ⊕ u_(n) ⊕ u_(n)^(′) ⊕ f(u₁, u₁^(′), …  , u_(n), u_(n)^(′)), and ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠const ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′ for i=1, . . . , n ƒ(u ₁ , u ₁ ′, . . . , u _(n) , u _(n)′)≠u _(i) ⊕u _(i)′⊕1 for i=1, . . . , n wherein z_(i) is a bit of the intermediate binary word z, A_(i) is a binary constant, u_(i) is a bit of a first binary word u of the pair of binary words, u′_(i) is a bit of the second binary word u′ of the pair of binary words and f(u₁, u′₁, . . . , u_(n), u′_(n)) is a common Boolean function.
 9. Apparatus according to claim 1, wherein a number of bits of a binary word of the pair of binary words (u, u′) and a number of bits of the intermediate binary word (z) is equal.
 10. Apparatus according to claim 1, wherein a number of bits of the error signal (y) is lower than a number of bits of the intermediate binary word (z).
 11. Apparatus according to claim 1, wherein the error signal (y) is a 1-bit-signal and the error detector is configured to provide the error signal (y) with a first bit value for equal or inverted binary words of the pair of binary words (u, u′), if the intermediate value determiner works faultlessly, and the error detector is configured to provide the error signal (y) with the first bit value for a faultlessly working intermediate value determiner, if the binary words of the pair of binary words (u, u′) are equal, wherein the error detector is configured to provide the 1-bit-signal with a second bit value for unequal and uninverted binary words of the pair of binary words (u, u′), if the intermediate value determiner works faultlessly, and the error detector is configured to provide the 1-bit-signal with the second bit value for an erroneously working intermediate value determiner, if the binary words of the pair of binary words (u, u′) are equal or inverted pairs (u,u′) of binary words.
 12. Apparatus according to claim 11, wherein the error detector is configured to determine the error signal (y) according to ${y_{1}(z)} = {{\overset{\_}{\overset{n}{\underset{i = 1}{}}\left( {z_{i} \oplus A_{i}} \right)} \oplus}\overset{n}{\underset{j = 1}{}}\left( {z_{j} \oplus A_{j}} \right)}$ or ${y_{1}\left( {z_{1},\ldots \mspace{14mu},y_{n}} \right)} = {{\overset{\_}{\overset{n}{\underset{i = 1}{}}\left( z_{i} \right)} \oplus}\overset{n}{\underset{j = 1}{}}\left( z_{j} \right)}$ or an inversion thereof, wherein y₁ (z₁, . . . , z_(n)) is the error signal, z_(i), z_(j) are bits of the intermediate binary word, i,j are indices indicating a position number of a bit within the intermediate binary word and A_(i), A_(j) are binary constants.
 13. Apparatus according to claim 1, wherein the error signal (y) is a 2-bit-signal and the error detector is configured to provide the error signal (y) with a first error bit sequence for the first pair of equal or inverted binary words and with an inversion of the first error bit sequence for the second pair of equal or inverted binary words, if the intermediate value determiner and the error detector work faultlessly, wherein the error detector is configured to provide the error signal (y) with a second error bit sequence for the pair of unequal and uninverted binary words, if the intermediate value determiner and the error detector work faultlessly, or for an erroneously working intermediate value determiner or an erroneously working error detector, if the binary words (u, u′) of the pair of binary words are equal or inverted, wherein the second error bit sequence is unequal to the first error bit sequence and to the inverted first error bit sequence.
 14. Apparatus according to claim 13, wherein the error detector is configured to determine a first bit (y₁) of the error signal and a second bit (y₂) of the error signal according to ${y_{1}\left( {z_{1},z_{2},\ldots \mspace{14mu},z_{n}} \right)} = \overset{\_}{\overset{n}{\underset{i = 1}{}}\left( {z_{i} \oplus A_{i}} \right)}$ and ${y_{2}\left( {z_{1},z_{2},\ldots \mspace{14mu},z_{n}} \right)} = {\overset{n}{\underset{j = 1}{}}\left( {z_{j} \oplus A_{j}} \right)}$ or ${y_{1}\left( {z_{1},\ldots \mspace{14mu},y_{n}} \right)} = \overset{\_}{\overset{n}{\underset{i = 1}{}}z_{i}}$ and ${y_{2}\left( {z_{1},\ldots \mspace{14mu},y_{n}} \right)} = {\overset{n}{\underset{j = 1}{}}z_{j}}$ or an inversion thereof, wherein y₁ (z₁, z₂, . . . , z_(n)) is the first bit of the error signal, y₂ (z₁, z₂, . . . , z_(n)) is the second bit of the error signal, z_(i), z_(j) is a bit of the intermediate binary word, A_(i), A_(j) is a binary constant and i, j is an indices indicating a position of a bit within the intermediate binary word.
 15. Apparatus according to claim 1, further comprising a mapper configured to provide a pair of binary words (w, w′) to be compared to the intermediate value determiner based on a pair of input binary words (u, u′), wherein the mapper is configured to map pairs of input binary words (u, u′) to pairs of binary words (w, w′) to be compared, so that a number of different possible pairs of binary words (w, w′) to be compared is larger than a number of different possible pairs of input binary words (u, u′).
 16. Apparatus according to claim 15, wherein the mapper comprises two linear feedback shift registers, wherein a first linear feedback shift register is configured to determine a first binary word (w) of a pair of binary words (w, w′) to be compared based on a first binary word (u) of a pair of input binary words (u, u′) and a second linear feedback shift register is configured to determine the second binary word (w′) of the pair of binary words (w, w′) to be compared based on the second binary word (u′) of the pair of input binary words (u, u′).
 17. Apparatus for comparing pairs of binary words (u, u′), the apparatus comprising: a means for determining an intermediate binary word configured to determine an intermediate binary word (z), so that the intermediate binary word (z) is equal to a reference binary word for a first pair of equal or inverted binary words, so that the intermediate binary word (z) is equal to an inversion of the reference binary word for a second pair of equal or inverted binary words and so that the intermediate binary word (z) is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words, if the means for determining an intermediate binary word works faultlessly, wherein the first pair of equal or inverted binary words is different from the second pair of equal or inverted binary words; and a means for providing an error signal configured to provide an error signal (y) based on the intermediate binary word (z), so that the error signal (y) indicates whether or not the binary word (u, u′) of a pair of binary words are equal or inverted, if the means for determining an intermediate binary word works faultlessly, and indicates whether or not the means for determining an intermediate binary word works faultlessly, if the binary words (u, u′) of a pair of binary words are equal or inverted.
 18. Method (700) for comparing pairs of binary words (u, u′), the method comprising: determining (710) an intermediate binary word (z), so that the intermediate binary word (z) is equal to a reference binary word for a first pair of equal or inverted binary words, so that the intermediate binary word (z) is equal to an inversion of the reference binary word for a second pair of equal or inverted binary words and so that the intermediate binary word (z) is unequal to the reference binary word and the inverted reference binary word for a pair of unequal and uninverted binary words, if the intermediate binary word is determined faultlessly, wherein the first pair of equal or inverted binary words is different from the second pair of equal or inverted binary words; and providing (720) an error signal (y) based on the intermediate binary word (z), so that the error signal (y) indicates whether or not the binary words (u, u′) of a pair of binary words are equal or inverted, if the intermediate binary word is determined faultlessly, and indicates whether or not the intermediate binary word is determined faultlessly, if the binary words (u, u′) of a pair of binary words are equal or inverted.
 19. Computer program with a program code for performing the method according to claim 18, wherein the computer program runs on a computer or a micro controller. 